package com.zx._12_算法.剑指offer._2022;

/**
 * 编写一个函数，输入是一个无符号整数（以二进制串的形式），返回其二进制表达式中数字位数为 '1' 的个数（也被称为 汉明重量).）。
 *
 * https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/
 */
public class 二进制中1的个数 {

    public int hammingWeight1(int n) {
        int res = 0;
        // int 是32位
        for (int i = 0; i < 32; i++) {
            int num = 1 << i;
            if ((n & num) != 0) {
                res++;
            }
        }
        return res;
    }

    public int hammingWeight(int n) {
        int res = 0;
        while (n != 0) {
            res += n & 1;
            n = n >>> 1;
        }
        return res;
    }

}
